!
!   Copyright © 2011, Kyungjoo Kim
!   All rights reserved.
  
!   This file is part of UHM.
  
!   Redistribution and use in source and binary forms, with or without
!   modification, are permitted provided that the following conditions are met:

!   1. Redistributions of source code must retain the above copyright notice,
!     this list of conditions and the following disclaimer.

!   2. Redistributions in binary form must reproduce the above copyright notice,
!     this list of conditions and the following disclaimer in the documentation
!     and/or other materials provided with the distribution.

!   3. Neither the name of the owner nor the names of its contributors
!     may be used to endorse or promote products derived from this software
!     without specific prior written permission.

!   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
!   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
!   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
!   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
!   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
!   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
!   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
!   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
!   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
!   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
!   POSSIBILITY OF SUCH DAMAGE.

  integer, parameter :: UHM_REAL               = 101
  integer, parameter :: UHM_COMPLEX            = 103

  integer, parameter :: UHM_FULL_MATRIX        = 100
  integer, parameter :: UHM_LOWER_TRIANGULAR   = 200
  integer, parameter :: UHM_UPPER_TRIANGULAR   = 300

  integer, parameter :: UHM_LHS                = 1
  integer, parameter :: UHM_RHS                = 2 

  integer, parameter :: UHM_LEAF_TO_ROOT       = 1
  integer, parameter :: UHM_ROOT_TO_LEAF       = 0

  integer, parameter :: UHM_NODE_KIND_DEFAULT  = 0
  integer, parameter :: UHM_NODE_KIND_BOUNDARY = 1 

  integer, parameter :: UHM_UNASSEMBLED        = 0
  integer, parameter :: UHM_ASSEMBLED          = 1

  integer, parameter :: UHM_PHYSICS_SINGLE     = 1
  integer, parameter :: UHM_PHYSICS_MULTI      = 2

  integer, parameter :: UHM_CHOL               = 1
  integer, parameter :: UHM_CHOL_PIV           = 2
  integer, parameter :: UHM_CHOL_INCPIV        = 3

  integer, parameter :: UHM_LDL_NOPIV          = 4
  integer, parameter :: UHM_LDL_PIV            = 5
  integer, parameter :: UHM_LDL_INCPIV         = 6

  integer, parameter :: UHM_LU_NOPIV           = 7
  integer, parameter :: UHM_LU_PIV             = 8
  integer, parameter :: UHM_LU_INCPIV          = 9

  integer, parameter :: UHM_QR                 = 10

  integer, parameter :: UHM_SYMMETRY   = 0
  integer, parameter :: UHM_UNSYMMETRY = 1


  character(len=9), dimension(10), parameter :: UHM_METHOD_NAME = &
       (/'CHOL     ','CHOL_PIV ','CHOL_IPIV', &
         'LDL_NOPIV','LDL_PIV  ','LDL_INPIV', &
         'LU_NOPIV ','LU_piv   ','LU_INCPIV', &
         'QR       '/)

  
